#include <iostream>
using namespace std;

/*
    子类隐藏父类的同名方法
      情况1：多个父类只有一个父类写了eat，无论写多少个eat--》答案跟单继承答案一模一样
      情况2：多个父类都写了eat，只要子类定义了一个eat，那么子类会隐藏所有父类的eat方法
      情况3：多个父类都写了eat，如果子类想调用父类的eat方法，必须加作用域
*/

class Catamount
{
public:
    // void eat()
    // {
    //     cout << "catamount eat" << endl;
    // }
};

class Mammal
{
public:
    void eat(string food)
    {
        cout << "mammal eat " << food << endl;
    }
    void eat()
    {
        cout << "mammal eat" << endl;
    }
};

class Cat : public Catamount, public Mammal
{
public:
    void eat()
    {
        cout << "cat eat" << endl;
    }
};

int main()
{
    Cat cat;
    cat.eat();               // 调用Cat类中的eat函数
    cat.Mammal::eat("fish"); // 调用Mammal类中的eat函数
    return 0;
}